package cn.csg.iotplatform.module.system.api.deviceno.dto;

import cn.hutool.db.meta.JdbcType;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @author Clqv
 * @create 2024--11--13 14:58
 */
@Data
public class DeviceNoSaveDTO {

    private String id;
    /**
     * 局编码(默认0301)
     */
    private String bureauCode;

    /**
     * 主配网标识，1主网，2配网，不填默认是3
     */
    private Integer powerGridFlag = 3;

    /**
     * 品牌，对应认证型号的品牌
     */
    @NotNull(message = "终端品牌不能为空")
    private String deviceBrand;

    /**
     * 型号名称/型号代码，对应认证型号的DEVICE_NO
     */
    @NotNull(message = "型号名称/型号代码不能为空")
    private String modelName;

    /**
     * 类别ID，对应认证型号的品类id
     */
    @NotNull(message = "类别ID不能为空")
    private String classifyId;

    /**
     * 型号中文名称，对应认证型号的deviceName
     */
    @NotNull(message = "型号中文名称不能为空")
    private String productModel;

    /**
     * 简介，对应认证型号的简介
     */
    @NotNull(message = "简介不能为空")
    private String note;

    /**
     * 应用场景，对应认证型号的应用场景
     */
    @NotNull(message = "应用场景不能为空")
    private String applicationScene;

    /**
     * 操作系统，对应认证型号的操作系统
     */
    @NotNull(message = "操作系统不能为空")
    private String deviceSystem;

    /**
     * 厂家ID，对应认证型号的厂家ID-deviceManufacturer
     */
    @NotNull(message = "厂家ID不能为空")
    private String vendorId;

    /**
     * 所属产品id，对应认证型号的所属产品
     */
    @NotNull(message = "所属产品id不能为空")
    private String productId;

    /**
     * 所属产品，对应认证型号的所属产品
     */
    @NotNull(message = "所属产品不能为空")
    private String productName;

    /**
     * 所属领域，对应认证型号的所属领域
     */
    @NotNull(message = "所属领域不能为空")
    private String domain;

    /**
     * 产品类型，对应认证型号的产品类型
     */
    @NotNull(message = "产品类型不能为空")
    private String productType;

    /**
     * 所属产品品类，对应认证型号的所属产品品类
     */
    @NotNull(message = "所属产品品类id不能为空")
    private String productCategoryId;

    /**
     * 所属产品品类，对应认证型号的所属产品品类
     */
    @NotNull(message = "所属产品品类不能为空")
    private String productCategoryName;

    /**
     * 物模型名称，对应认证型号的物模型名称-modelName
     */
    @NotNull(message = "物模型id不能为空")
    private String physicalModelId;

    /**
     * 物模型名称，对应认证型号的物模型名称-modelName
     */
    @NotNull(message = "物模型名称不能为空")
    private String physicalModelName;

    /**
     * 物模型版本，对应认证型号的物模型版本
     */
    @NotNull(message = "物模型版本不能为空")
    private String versionNo;

    /**
     * 设备类型，对应认证型号的设备类型--deviceClassify
     */
    @NotNull(message = "设备类型不能为空")
    private String deviceType;

    /**
     * 备注，对应认证型号的备注
     */
    private String remark;

    /**
     * 通信规约，对应认证型号的通信规约--communicationProtocolSouth
     */
    private String protocol;

    /**
     * 端口规约，对应认证型号的端口规约--communicationProtocolNorth
     */
    private String portProtocol;

    /**
     * 尺寸，对应认证型号的尺寸
     */
    private String deviceSize;

    /**
     * 重量，对应认证型号的重量
     */
    private String deviceWeight;

    /**
     * 工作温度，对应认证型号的工作温度
     */
    private String temperature;

    /**
     * 工作湿度，对应认证型号的工作湿度
     */
    private String humidity;

    /**
     * 处理器，对应认证型号的处理器--CPU
     */
    private String processor;

    /**
     * 寄存器数量，对应认证型号的寄存器数量
     */
    private String numberOfRegisters;

    /**
     * 内存，对应认证型号的内存
     */
    private String memory;

    /**
     * 存储，对应认证型号的存储
     */
    private String store;

    /**
     * 内核版本，对应认证型号的内核版本
     */
    private String kernelVersion;

    /**
     * 固件版本，对应认证型号的固件版本
     */
    private String systemVersion;

    /**
     * 通信协议，对应认证型号的通信协议
     */
    private String communicationProtocol;

    /**
     * 工作电压，对应认证型号的工作电压
     */
    private String voltage;

    /**
     * 工作电流，对应认证型号的工作电流
     */
    private String electricity;

    /**
     * 额定功率，对应认证型号的额定功率
     */
    private String ratedPower;

    /**
     * 接口类型，对应认证型号的接口类型
     */
    private String interfaceType;

    /**
     * 接口参数json类型，对应认证型号的接口参数json类型
     */
    private String interfaceParam;

    /**
     * 串口号，对应认证型号的串口号
     */
    private String serialPortNo;

    /**
     * 起始地址，对应认证型号的起始地址
     */
    private String startAddress;

    /**
     * 接口数量，对应认证型号的接口数量
     */
    private Integer serialPortNum;

    /**
     * 启用状态，对应认证型号的启用状态
     */
    private Integer enablingStatus;

    /**
     * 屏幕尺寸，对应认证型号的屏幕尺寸
     */
    private String screenSize;

    /**
     * 屏幕分别率，对应认证型号的屏幕分别率
     */
    private String screenResolution;

    /**
     * 屏幕刷新率，对应认证型号的屏幕刷新率
     */
    private String screenRefresh;

    /**
     * 供电方式，对应认证型号的供电方式
     */
    private String powerSupplyMode;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;
    /**
     * 最后更新时间
     */
    private LocalDateTime updateTime;
    /**
     * 创建者，目前使用 SysUser 的 id 编号
     *
     * 使用 String 类型的原因是，未来可能会存在非数值的情况，留好拓展性。
     */
    private String creator;
    /**
     * 更新者，目前使用 SysUser 的 id 编号
     *
     * 使用 String 类型的原因是，未来可能会存在非数值的情况，留好拓展性。
     */
    private String updater;
    /**
     * 是否删除
     */
    private Boolean deleted;

    /**
     * 总附件urlList
     */
    List<String> fileUrlList;

    /**
     * 新增附件urlList
     */
    List<String> insertFileUrlList;

    /**
     * 删除的附件idList
     */
    List<String> deletedFileIdList;
}
